package com.atguigu.Flink.state;

//状态后端：
//        1.HashMapStateBackend
//            将状态中的数据直接存在TaskManger的内存中
//        2.EmbeddedRocksDBStateBackend
//            将状态的数据存储在TaskManager的磁盘中
//                       状态的读写性能稍差(对比HashMapStateBackend) ，但是能支持超大状态。
//                       生产环境中使用EmbeddedRocksDBStateBackend比较多。

import com.atguigu.Flink.POJO.Event;
import com.atguigu.Flink.function.ClickSource;
import org.apache.flink.contrib.streaming.state.EmbeddedRocksDBStateBackend;
import org.apache.flink.runtime.state.StateBackend;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;

public class Flink11_StateBackend {
        public static void main(String[] args) {
                StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
                //当前使用的状态后端
                StateBackend stateBackend = env.getStateBackend();
                System.out.println(stateBackend);
                //设置使用状态后端
                env.setStateBackend(new EmbeddedRocksDBStateBackend());
                System.out.println(env.getStateBackend());
                DataStreamSource<Event> ds = env.addSource(new ClickSource());



                ds.print();


                try {
                        env.execute();
                } catch (Exception e) {
                        throw new RuntimeException(e);
                }
        }
}
